package com.greate.community.mapper;

import com.greate.community.entity.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

/**
 * 用户信息统计数据访问接口
 */
@Mapper
public interface UserInfoMapper {

    /**
     * 查询用户统计信息
     * @return 用户统计信息对象
     */
    @Select("SELECT * FROM userinfo LIMIT 1")
    UserInfo selectUserInfo();

    /**
     * 更新用户统计信息
     * @param userInfo 用户统计信息对象
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET current_user_count = #{currentUserCount}, total_user_count = #{totalUserCount}, " +
            "current_visit_count = #{currentVisitCount}, total_visit_count = #{totalVisitCount}, " +
            "current_download_count = #{currentDownloadCount}, total_download_count = #{totalDownloadCount}, " +
            "current_usage_count = #{currentUsageCount}, total_usage_count = #{totalUsageCount} " +
            "WHERE id = #{id}")
    int updateUserInfo(UserInfo userInfo);

    /**
     * 增加当前用户量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET current_user_count = current_user_count + #{count}")
    int incrementCurrentUserCount(@Param("count") int count);

    /**
     * 增加总用户量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET total_user_count = total_user_count + #{count}")
    int incrementTotalUserCount(@Param("count") int count);

    /**
     * 增加当前访问量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET current_visit_count = current_visit_count + #{count}")
    int incrementCurrentVisitCount(@Param("count") int count);

    /**
     * 增加总访问量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET total_visit_count = total_visit_count + #{count}")
    int incrementTotalVisitCount(@Param("count") int count);

    /**
     * 增加当前下载量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET current_download_count = current_download_count + #{count}")
    int incrementCurrentDownloadCount(@Param("count") int count);

    /**
     * 增加总下载量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET total_download_count = total_download_count + #{count}")
    int incrementTotalDownloadCount(@Param("count") int count);

    /**
     * 增加当前使用量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET current_usage_count = current_usage_count + #{count}")
    int incrementCurrentUsageCount(@Param("count") int count);

    /**
     * 增加总使用量
     * @param count 增加数量
     * @return 更新结果
     */
    @Update("UPDATE userinfo SET total_usage_count = total_usage_count + #{count}")
    int incrementTotalUsageCount(@Param("count") int count);
}